[アップデート] AWS Lambda でPython 3.12ランタイムがサポートされました
こんにちは、つくぼしです!
LambdaランタイムでPython 3.12がサポートされました。
コンソールからLambdaのランタイムを確認すると、以下の通りPython 3.12が選べるようになってますね。
今回はAWS LambdaランタイムにおけるPython 3.12を紹介します!
アップデート内容
LambdaのランタイムでPython 3.12を選択する事で、Python 3.12における新機能が使用できるようになっております。
Python 3.12の新機能については、以下のPython公式ドキュメントに記載があります。
なおPython 3.12自体は、2023/10/2にリリースされています。
さらにLambdaランタイム自体にも、Python 3.12よりいくつかの変更点が加えられています。
- Amazon Linux 2023の使用
- 応答形式の変更
- 正常なシャットダウンのための拡張機能の処理
詳しくは以下のAWS公式ブログをご覧ください。
動作確認
以下の「f文字列の形式定義」を参考に、LambdaでPython 3.12の新機能が想定通り動作するか確認してみます。
以下のLambdaコードを、以前のバージョンであるPython 3.11と、今回のPython 3.12それぞれで実施し、出力結果を比較します。
def lambda_handler(event, context): print(f"aはasciiコードで{hex(ord("a"))}") print(f'aはasciiコードで{hex(ord('a'))}') print(f"{f"{f"{"f文字列ネストし放題!"}"}"}")
ランタイムにPython 3.11を選択した場合、上記のコードを実行すると、function logに以下のようなエラーが出力されます。
START RequestId: 8f6256f7-f06d-4f07-b7c3-79f10640a06d Version: $LATEST [ERROR] Runtime.UserCodeSyntaxError: Syntax error in module 'lambda_function': invalid character '!' (U+FF01) (lambda_function.py, line 4) Traceback (most recent call last): File "/var/task/lambda_function.py" Line 4 print(f"{f"{f"{"f文字列ネストし放題!"}"}"}")END RequestId: 8f6256f7-f06d-4f07-b7c3-79f10640a06d REPORT RequestId: 8f6256f7-f06d-4f07-b7c3-79f10640a06d Duration: 9.98 ms Billed Duration: 10 ms Memory Size: 128 MB Max Memory Used: 40 MB Init Duration: 143.84 ms
ランタイムにPython 3.12を選択した場合、上記のコードを実行すると、function logで以下の通り正常に実行される事が分かりました!
START RequestId: af5e39de-77f6-4cf3-8989-d760776067d8 Version: $LATEST aはasciiコードで0x61 aはasciiコードで0x61 f文字列ネストし放題! END RequestId: af5e39de-77f6-4cf3-8989-d760776067d8 REPORT RequestId: af5e39de-77f6-4cf3-8989-d760776067d8 Duration: 2.36 ms Billed Duration: 3 ms Memory Size: 128 MB Max Memory Used: 33 MB Init Duration: 127.33 ms
最後に
今回はAWS LambdaランタイムにおけるPython 3.12を紹介しました!
まだLambdaで以前のバージョンのランタイムを使用されている方は、EOLを踏まえて計画的に最新バージョンに切り替えていくと良いかと思います。
以上、つくぼしでした!